package com.karry.service;

import com.karry.pojo.Blog;
import com.karry.pojo.User;
import com.karry.util.Page;
import com.karry.vo.BlogVo;
import com.karry.vo.ResultInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 *  博客类操作服务层接口
 * */
public interface BlogService {

    /*
    *   查找全部
    * */
    ArrayList<Blog> getAllBlog();

    /**
     *  通过用户id查询博客
     * */
    ResultInfo<List<Blog>> searchBlogListByUserID(int id);

    /**
     *  通过月份分组查询博客
     * */
    ResultInfo<Map<String, Object>> searchBlogCountByMonth(int id);

    /***
     *  通过用户分组查询博客
     * */
    ResultInfo<Map<String, Object>> searchBlogCountByUser();

    /**
     *  通过id查询博客
     * */
    Blog searchBlogById(int blogId);

    /**
     *  根据指定要求（标题，所属用户，是否公开，类型，时间）分页查询博客
     * */
    Page<Blog> findBlogListByPage(String pageNum, String pageSize, Integer id, String title, String date, String typeId, int r);

    /**
     *  查询各月发布博客数量
     * */
    List<BlogVo> findNoteCountByDate(int id);

    /**
     *  查询各类型发布博客数量
     * */
    List<BlogVo> findNoteCountByType(int id);

    /**
     *  添加或者修改博客
     * */
    ResultInfo<Blog> addOrUpdate(String typeId, String title, String content, String blogId, String lon, String lat, int isOpen, HttpServletRequest request);

    /**
     *  逻辑删除博客
     * */
    Integer deleteBlog(String blogId, HttpServletRequest request);

    /**
     *  敏感词检测
     * */
    boolean sensitiveCheck(String title, String type, String content, String name);

    Page<Blog> getAllBlogListByPage(int index);

    ResultInfo<Integer> liveBlog(int id, HttpServletRequest request);

    ResultInfo<Integer> closeBlog(int id, HttpServletRequest request);

    ResultInfo<Integer> openBlog(int id, HttpServletRequest request);

    ResultInfo<Integer> deleteBlog2(int id, HttpServletRequest request);

    int addViewCount(int id);
}
